﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string>
using namespace std;

//class String
//{
//public:
//	char& operator[](size_t pos)
//	{
//		assert(pos > _top);
//		return _str[pos];
//	}
//private:
//	char* _str;
//	int _top;
//	int _capacity;
//};

//int main()
//{
//	//string s; //调用无参构造
//	string s1("hello world"); //通过C字符串构造
//	//string s2(s1); //调用拷贝构造
//
//	//cout << s << endl;
//	//cout << s1 << endl;
//	//cout << s2 << endl;
//
//	//string s3(s1, 2, 3);
//	//cout << s3 << endl;
//
//	//string s4("hello world", 5);
//	//cout << s4 << endl;
//
//	//string s5(5, 'a');
//	//cout << s5 << endl;
//
//	s1[0] = 'a';
//	cout << s1[0] << endl;
//	cout << s1[12] << endl;
//
//	return 0;
//}

//遍历String
//int main()
//{
//	string s1("hello world");
//	
//	//[]重载
//	//cout << "s1:" << endl;
//	//for (size_t i = 0; i < s1.size(); i++)
//	//{
//	//	cout << s1[i] << " ";
//	//}
//	//cout << endl;
//
//	//迭代器
//
//	//正向迭代器
//	string::iterator it = s1.begin();
//	while (it != s1.end())
//	{
//		*it += 1;
//		cout << *it << " ";
//		it++;
//	}
//	cout << endl;
//	cout << s1 << endl;
//
//	//反向迭代器
//	//string::reverse_iterator revIt = s1.rbegin();
//	//while (revIt != s1.rend())
//	//{
//	//	cout << *revIt << " ";
//	//	revIt++;
//	//}
//	//cout << endl;
//
//	//自动判断类型
//	for (auto ch : s1)
//	{
//		ch += 1;
//		cout << ch << " ";
//	}
//	cout << endl;
//	cout << s1 << endl;
//
//	//for (auto& ch : s1)
//	//{
//	//	ch += 1;
//	//	cout << ch << " ";
//	//}
//	//cout << endl;
//	//cout << s1 << endl;
//
//	//const对象使用const迭代器
//
//	//正向迭代器
//	//const string s2(s1);
//	//string::const_iterator it2 = s2.begin();
//	//cout << "s2:" << endl;
//	//while (it2 != s2.end())
//	//{
//	//	cout << *it2 << " ";
//	//	it2++;
//	//}
//	//cout << endl;
//
//	//反向迭代器
//	//string::const_reverse_iterator revIt2 = s2.rbegin();
//	//while (revIt2 != s2.rend())
//	//{
//	//	cout << *revIt2 << " ";
//	//	revIt2++;
//	//}
//	//cout << endl;
//
//	return 0;
//}

//auto可以做返回值，不能修饰形参
//int func2(int x)
//{
//	return 1;
//}
//
//auto func(int x)
//{
//	//...
//	return func2(1);
//}
//
//int main()
//{
//	//auto x; //必须初始化
//	return 0;
//}

//reverse和capacity
//class string
//{
//private:
//	char _res[16]; //预留空间
//	char* _str; //
//	int _size; //有效元素个数
//	int _capacity; //实际容量
//};

//int main()
//{
//	string s1("hello world");
//	string s2("abc");
//
//	//cout << sizeof(s1) << endl;
//	//cout << sizeof(s2) << endl;
//
//	//capacity:用来获取开辟的总空间大小
//	//reserve:
//	//根据给入的n来进行空间扩充或者缩小
//	//1. n > current capacity,扩充至n或者更大
//	//2. n < current capacity,vs中不进行收缩
//	//3. n = current capacity,不做操作
//
//	/*cout << "origin size:" << s1.size() << endl;
//	cout << "origin capacity:" << s1.capacity() << endl;
//	s1.reserve(24);
//	cout << endl;
//	cout << "origin size:" << s1.size() << endl;
//	cout << "origin capacity:" << s1.capacity() << endl;
//	s1.reserve(32);
//	cout << endl;
//	cout << "origin size:" << s1.size() << endl;
//	cout << "origin capacity:" << s1.capacity() << endl;
//	s1.reserve(47);
//	cout << endl;
//	cout << "origin size:" << s1.size() << endl;
//	cout << "origin capacity:" << s1.capacity() << endl;*/
//
//
//	/*cout << "origin size:" << s1.size() << endl;
//	cout << "origin capacity:" << s1.capacity() << endl;
//	s1.reserve(12);
//	cout << endl;
//	cout << "origin size:" << s1.size() << endl;
//	cout << "origin capacity:" << s1.capacity() << endl;*/
//
//	return 0;
//}

//empty和clear
//int main()
//{
//	string s1("hello world");
//	cout << s1.empty() << endl;
//
//	s1.clear();
//	cout << s1.empty() << endl;
//
//	return 0;
//}

//int main(int argc, char* argv[])
//{
//	string a = "hello world";
//	string b = a;
//	if (a.c_str() == b.c_str())
//	{
//		cout << "true" << endl;
//	}
//	else cout << "false" << endl;
//
//	string c = b;
//	c = "";
//	if (a.c_str() == b.c_str())
//	{
//		cout << "true" << endl;
//	}
//	else cout << "false" << endl;
//
//	a = "";
//	if (a.c_str() == b.c_str())
//	{
//		cout << "true" << endl;
//	}
//	else cout << "false" << endl;
//
//	return 0;
//}

//int main()
//{
//	string s1("1234");
//	string s2 = s1;
//
//	const char* ps1 = s1.c_str();
//	const char* ps2 = s2.c_str();
//
//	return 0;
//}

//int main()
//{
//	string str("Hello Bit.");
//	str.reserve(111);
//	str.resize(5);
//	str.reserve(50);
//	cout << str.size() << ":" << str.capacity() << endl;
//
//	//string s1("hello world");
//	//cout << s1 << endl;
//
//	//s1.resize(5);
//	//cout << s1 << endl;
//
//	//s1.resize(11, 'a');
//	//cout << s1 << endl;
//
//	return 0;
//}

//int main(int argc, char* argv[])
//{
//	string strText = "How are you?";
//	string strSeparator = " ";
//	string strResult;
//	int size_pos = 0;
//	int size_prev_pos = 0;
//
//	while ((size_pos = strText.find_first_of(strSeparator, size_pos)) != string::npos)
//	{
//		strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
//		cout << strResult << " ";
//		size_prev_pos = ++size_pos;
//	}
//
//	if (size_prev_pos != strText.size())
//	{
//		strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
//		cout << strResult << " ";
//	}
//	cout << endl;
//
//	return 0;
//}

//int main()
//{
//	string s1("hello world");
//
//	//append--尾插字符串
//	s1.append("xxxx");
//	cout << s1 << endl;
//
//	//push_back--尾插字符
//	s1.push_back('a');
//	cout << s1 << endl;
//
//	// += --> append，push_back的结合
//	s1 += 'b';
//	s1 += "acc";
//	cout << s1 << endl;
//
//	//insert--头插 (慎用，时间复杂度高)
//	s1.insert(0, "hello bit ");
//	cout << s1 << endl;
//
//	s1.insert(0, 1, 'x');
//	cout << s1 << endl;
//
//	//erase--清除部分字符串
//	s1.erase(0, 11);
//	cout << s1 << endl;
//
//	//replace--替换部分字符串内容 (慎用，时间复杂度高)
//	//s1.replace(0, 5, "******");
//	//cout << s1 << endl;
//
//	//string s2("hello bit and world");
//	//size_t pos = s2.find(' ');
//
//	//while (pos != string::npos)
//	//{
//	//	s2.replace(pos, 1, "%%");
//	//	pos = s2.find(' ', pos + 2);
//	//}
//
//	//cout << s2 << endl;
//
//	//string s2("hello bit and world");
//	//string s3;
//	//s3.reserve(s2.size());
//
//	//for (auto ch : s2)
//	//{
//	//	if (ch == ' ')
//	//		s3 += "%%";
//	//	else
//	//		s3 += ch;
//	//}
//
//	//s2.swap(s3);
//	//cout << s2 << endl;
//
//	//c_str -- 返回字符串的指针
//	//string fileName;
//	//getline(cin, fileName);
//
//	//FILE* pf = fopen(fileName.c_str(), "r");
//	//if (pf == NULL)
//	//{
//	//	perror("fopen fail");
//	//	return -1;
//	//}
//
//	//char ch = ' ';
//	//while ((ch = fgetc(pf)) != EOF)
//	//{
//	//	cout << ch;
//	//}
//
//	//fclose(pf);
//
//	//copy -- 将string中的子串复制到c字符串中
//	//string s4("hello world");
//	//char s[12] = " ";
//	//s4.copy(s, 5, 0);
//	//cout << s << endl;
//
//	//find -- 从前向后查找
//	//string s4("test.cpp");
//	//size_t pos = s4.find('.');
//	//string fileType = s4.substr(pos);
//	//cout << fileType << endl;
//
//	//rfind -- 从后往前查找
//	//string s5("test.cpp.zip");
//	//size_t pos = s5.rfind('.');
//	//string fileType = s5.substr(pos);
//	//cout << fileType << endl;
//
//	//find_first_of -- 从前向后查找匹配的字符
//	//string s6("hello world");
//	//size_t pos = s6.find_first_of("elo");
//	//while (pos != string::npos)
//	//{
//	//	s6[pos] = '*';
//	//	pos = s6.find_first_of("elo", pos + 1);
//	//}
//	//cout << s6;
//
//	//find_last_of -- 从后向前查找匹配的字符
//	//string s6("hello world");
//	//size_t pos = s6.find_last_of("elo");
//	//while (pos != string::npos)
//	//{
//	//	s6[pos] = '*';
//	//	pos = s6.find_first_of("elo", pos + 1);
//	//}
//	//cout << s6;
//
//	//find_first_not_of -- 从前向后查找不匹配的字符
//	//string s6("hello world");
//	//size_t pos = s6.find_first_not_of("elo");
//	//while (pos != string::npos)
//	//{
//	//	s6[pos] = '*';
//	//	pos = s6.find_first_not_of("elo", pos + 1);
//	//}
//	//cout << s6;
//
//	//find_last_not_of -- 从后向前查找不匹配的字符
//	//string s6("hello world");
//	//size_t pos = s6.find_last_not_of(' ');
//
//	//while (pos != string::npos)
//	//{
//	//	s6.erase(pos, 1);
//	//	pos = s6.find_last_not_of(' ');
//	//}
//
//	//cout << s6 << endl;
//
//
//	return 0;
//}

//int main()
//{
//	char str[5] = "abcd";
//
//	str[0] = 49;
//	str[1] = 50;
//	str[2] = 51;
//	str[3] = 52;
//
//	return 0;
//}

//int main()
//{
//	char16_t s1[5] = u"abcd";
//	char32_t s2[5] = U"abcd";
//	wchar_t s3[5] = L"abcd";
//
//	cout << sizeof(s1) << endl;
//	cout << sizeof(s2) << endl;
//	cout << sizeof(s3) << endl;
//
//	return 0;
//}

//int main()
//{
//	string str1; //无参构造
//	string str2("hello world"); //通过 C 的字符串构造string
//	string str3(str1); //拷贝构造
//
//	return 0;
//}

//int main()
//{
//	string str1("hello world");
//
//	for (size_t i = 0;i < str1.size();++i)
//	{
//		cout << str1[i];
//	}
//	cout << endl;
//
//	string::iterator it = str1.begin();
//	while (it != str1.end())
//	{
//		cout << *it;
//		it++;
//	}
//	cout << endl;
//
//	string::reverse_iterator rit = str1.rbegin();
//	while (rit != str1.rend())
//	{
//		cout << *rit;
//		rit++;
//	}
//	cout << endl;
//
//	for (auto ch : str1)
//	{
//		cout << ch;
//	}
//	cout << endl;
//
//	return 0;
//}

//int main()
//{
//	string str1("hello world");
//
//	cout << "原大小: " << str1.capacity() << endl;
//	str1.reserve(20);
//	cout << "新大小: " << str1.capacity() << endl;
//	cout << endl;
//
//	cout << "原大小: " << str1.capacity() << endl;
//	str1.reserve(40);
//	cout << "新大小: " << str1.capacity() << endl;
//	cout << endl;
//
//	cout << "原大小: " << str1.capacity() << endl;
//	str1.reserve(60);
//	cout << "新大小: " << str1.capacity() << endl;
//	cout << endl;
//
//	return 0;
//}

//int main()
//{
//	string str1("hello world");
//
//	cout << "原大小: " << str1.capacity() << endl;
//	str1.reserve(5);
//	cout << "新大小: " << str1.capacity() << endl;
//
//	return 0;
//}

//int main()
//{
//	string str1("hello world");
//	str1.resize(20, 'a');
//	cout << str1;
//	return 0;
//}

//int main()
//{
//	string str1("hello world");
//	str1.resize(5);
//	cout << str1;
//	return 0;
//}

//int main()
//{
//	string str1("hello world");
//	str1.push_back('a');
//	cout << str1 << endl;
//	return 0;
//}

//int main()
//{
//	string str1("hello world");
//	string str2("hello bit");
//
//	str2.append(str1);
//	cout << str2 << endl;
//	str1.append("hello bit");
//	cout << str1 << endl;
//
//	return 0;
//}

//int main()
//{
//	string str1("hello world");
//	string str2("hello bit");
//
//	str1 += 'a';
//	str2 += "hello world";
//
//	cout << str1;
//	cout << str2;
//
//	return 0;
//}

//int main()
//{
//	string str1("hello world");
//	cout << str1.find('h') << endl;
//	cout << str1.find("hello") << endl;
//	return 0;
//}

//int main()
//{
//	string str1("hello world");
//	cout << str1.rfind('h') << endl;
//	cout << str1.rfind("hello") << endl;
//	return 0;
//}

//int main()
//{
//	string str1("hello world");
//	cout << str1.substr(0, 5) << endl;
//	return 0;
//}

int main()
{
	string str1;
	getline(cin, str1);
	cout << str1 << endl;
	return 0;
}